home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Texteditors / ProgEd / sources / ped_scan / ScanGuide.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-09-27  |  1.4 KB  |  75 lines

  1.  
  2. /***** Include vari *****/
  3.  
  4. #include "ProgED:sources/include/Ped.h"
  5.  
  6.  
  7.  
  8. /*****
  9.  *
  10.  * FUNZIONE:    ULONG SAVEDS ASM main(char *line,char *sectionname)
  11.  *
  12.  * SCOPO:    Cerca un riferimento ad un nodo AmigaGuide nella linea
  13.  *        puntata da "line". Il nome del riferimento viene copiato
  14.  *        in "sectionname".
  15.  *
  16.  * NOTA:    Utilizza SEMPRE la funzione geta4() o la direttiva __saveds!
  17.  *
  18.  * RESTITUISCE: Lunghezza della stringa copiata in "sectionname".
  19.  *        0=riferimento non trovato.
  20.  *
  21.  ****/
  22.  
  23. ULONG SAVEDS ASM main(RG(a0) char *line,RG(a1) char *sectionname)
  24. {
  25.     char    *p,
  26.         *q,
  27.         *d;
  28.     int    i;
  29.  
  30.  
  31.  
  32.     /***** Controlla che la linea inizi per '@node' *****/
  33.     p=line;
  34.     if (*p)
  35.     {
  36.         if (p[0]=='@')
  37.         if ((p[1]=='n')||(p[1]=='N'))
  38.         if ((p[2]=='o')||(p[2]=='O'))
  39.         if ((p[3]=='d')||(p[3]=='D'))
  40.         if ((p[4]=='e')||(p[4]=='E'))
  41.         {
  42.             /***** Salta eventuali spazi e nodi dopo @node *****/
  43.             p+=5;
  44.             while((*p==32)||(*p==9))    p++;
  45.  
  46.             /***** Copia la stringa su cui ti trovi ora fino
  47.                 al prossimo spazio o TAB *****/
  48.             if (*p)
  49.             {
  50.                 q=p;
  51.                 if (*p==34)
  52.                 {
  53.                     q++;
  54.                     while((*q!=34)&&(*q)) q++;
  55.                 }
  56.                 else
  57.                 {
  58.                     while((*q!=32)&&(*q!=9)&&(*q))    q++;
  59.                 }
  60.                 if (*p==34)    p++;
  61.                 if (*(q-1)==34)    q--;
  62.  
  63.                 /***** Copia il nome e ritorna *****/
  64.                 d=sectionname;
  65.                 for(i=0;i<q-p;i++)    *d++=p[i];
  66.                 *d='\0';
  67.                 return(q-p);
  68.             }
  69.         }
  70.     }
  71.  
  72.     /***** Nulla da fare! *****/
  73.     return(0);
  74. }
  75.